#ifndef JUGADOR_H_
#define JUGADOR_H_

#include <string>
#include <list>


using namespace std;

class Jugador
{
private:
	string color;
	unsigned int ejercitos;
	list<Territorio*> territoriosBajoControl;
	CartaDeObjetivos* cartaDeObjetivos;
	unsigned int ejercitosParaOcupar;
public:
	Jugador(string color);
	string getColor();
	void asignarEjercitos(unsigned int cantidadDeEjercitos);
	void quitarEjercitos(unsigned int cantidadDeEjercitos);
	unsigned int getCantidadDeEjercitos();
	CartaDeObjetivos* getCartaDeObjetivos();
	void setCartaDeObjetivos(CartaDeObjetivos* cartaDeObjetivos);
	virtual ~Jugador();
	
	unsigned int getCantidadDadosParaDefender(unsigned int dadosDelAtacante) {
		return 2;
	}
	/**
	 * Luego de un ataque que produce la eliminacion de todos los ejercitos del oponente, 
	 * el jugador debe indicar cuantos ejercitos desea mover a su nuevo territorio.
	 */
	unsigned int getCantidadDeEjercitosParaOcupar();
	
	bool equals(Jugador* jugador) {
		return (color == jugador->color);
	}
	string toString() {
		return "Jugador de color "+ color;
	}
};

#endif /*JUGADOR_H_*/
